package com.ruoyi.base.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.base.mapper.BaseSemsterMapper;
import com.ruoyi.base.domain.BaseSemster;
import com.ruoyi.base.service.IBaseSemsterService;

/**
 * 学期Service业务层处理
 * 
 * @author yepanpan
 * @date 2020-11-09
 */
@Service
public class BaseSemsterServiceImpl implements IBaseSemsterService 
{
    @Autowired
    private BaseSemsterMapper baseSemsterMapper;

    /**
     * 查询学期
     * 
     * @param id 学期ID
     * @return 学期
     */
    @Override
    public BaseSemster selectBaseSemsterById(Long id)
    {
        return baseSemsterMapper.selectBaseSemsterById(id);
    }

    /**
     * 查询学期列表
     * 
     * @param baseSemster 学期
     * @return 学期
     */
    @Override
    public List<BaseSemster> selectBaseSemsterList(BaseSemster baseSemster)
    {
        return baseSemsterMapper.selectBaseSemsterList(baseSemster);
    }

    /**
     * 新增学期
     * 
     * @param baseSemster 学期
     * @return 结果
     */
    @Override
    public int insertBaseSemster(BaseSemster baseSemster)
    {
    	//保证只有一个当前学期
    	if("Y".equalsIgnoreCase(baseSemster.getIsCurrent())) {
    		BaseSemster bsc = new BaseSemster();
        	bsc.setIsCurrent("Y");
        	List<BaseSemster> list = baseSemsterMapper.selectBaseSemsterList(bsc);
        	for(BaseSemster bs:list) {
        		bs.setIsCurrent("N");
        		baseSemsterMapper.updateBaseSemster(bs);
        	}
    	}
    	
        return baseSemsterMapper.insertBaseSemster(baseSemster);
    }

    /**
     * 修改学期
     * 
     * @param baseSemster 学期
     * @return 结果
     */
    @Override
    public int updateBaseSemster(BaseSemster baseSemster)
    {
    	//保证只有一个当前学期
    	if("Y".equalsIgnoreCase(baseSemster.getIsCurrent())) {
    		BaseSemster bsc = new BaseSemster();
        	bsc.setIsCurrent("Y");
        	List<BaseSemster> list = baseSemsterMapper.selectBaseSemsterList(bsc);
        	for(BaseSemster bs:list) {
        		if(bs.getId().equals(baseSemster.getId())) continue;
        		
        		bs.setIsCurrent("N");
        		baseSemsterMapper.updateBaseSemster(bs);
        	}
    	}
        return baseSemsterMapper.updateBaseSemster(baseSemster);
    }

    /**
     * 批量删除学期
     * 
     * @param ids 需要删除的学期ID
     * @return 结果
     */
    @Override
    public int deleteBaseSemsterByIds(Long[] ids)
    {
        return baseSemsterMapper.deleteBaseSemsterByIds(ids);
    }

    /**
     * 删除学期信息
     * 
     * @param id 学期ID
     * @return 结果
     */
    @Override
    public int deleteBaseSemsterById(Long id)
    {
        return baseSemsterMapper.deleteBaseSemsterById(id);
    }
    
    /**
     * 查询当前学期
     * 
     * @return 学期
     */
    @Override
    public BaseSemster getCurrentSemster() {
    	BaseSemster bsc = new BaseSemster();
    	bsc.setIsCurrent("Y");
    	bsc.setStatus("1");
    	List<BaseSemster> list = baseSemsterMapper.selectBaseSemsterList(bsc);
    	return list.size() > 0 ? list.get(0) : null;
    }
}
